package com.example.pm.ending.server.mapper;

import com.example.pm.ending.server.pojo.entity.House;
import com.example.pm.ending.server.pojo.vo.HouseListVO;
import com.example.pm.ending.server.pojo.vo.HouseStandardVO;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * @author 闫鑫飞
 */
@Repository
public interface HouseMapper {
    /**
     * 添加新房产
     * @param house 新房产参数
     */
    int insert(House house);

    /**
     * 批量添加房产
     * @param list 新房产们
     */
    int insertBatch(List<House>list);

    /**
     * 通过id删除房产
     * @param id 房产的id
     */
    int deleteById(Long id);

    /**
     * 批量添加房产
     * @param id 房产的id们
     */
    int deleteBatch(List<Long>id);

    /**
     * 动态修改房产信息
     * @param house 修改后的房产信息
     */
    int update(House house);

    /**
     * 通过业主id  修改业主id和房屋状态id
     * @param upOwnerId 修改后的业主id
     * @param stateId 房屋状态id
     * @param ownerId 修改的业主id
     * @return 修改的数量
     * @author 闫鑫飞
     */
    int updateOwnerIdAndStateIdByOwnerId(Long upOwnerId, Integer stateId, Long ownerId);



    /**
     * 查询房产总数
     */
    Long count();

    /**
     * @author 闫鑫飞
     */
    int countByRoomNum(String roomNum);
    /**
     * 根据房间号和栋与关联id查询数量
     * @param roomNum 房间号
     * @param buildUnitRelId  栋与单元关联id
     * @return 查到的数量
     */
    Integer countByRoomNumAndBuildUnitRelId(String roomNum,Long buildUnitRelId);

    /**
     * 房产列表
     * @return List<HouseListVO>
     */
    List<HouseListVO> list();

    /**
     * 根据根据房间号和栋与关联id查找房产信息
     * @param roomNum 房间号
     * @param buildUnitRelId  栋与单元关联id
     * @return HouseStandardVO
     */
    HouseStandardVO getHouseByRoomNumAndBuildUnitRelId(String roomNum,Long buildUnitRelId);

    /**
     * 根据id查找房产信息
     * @param id 房产id
     * @return HouseStandardVO
     */
    HouseStandardVO getHouseById(Long id);

    /**
     *
     * @param ownerId 业主id
     * @return HouseStandardVO
     * @author 闫鑫飞
     */
    HouseStandardVO getHouseByOwnerId(Long ownerId);


}
